home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
TPUG - Toronto PET Users Group
/
TPUG Users Group CD
/
TPUG Users Group CD.iso
/
NEW
/
A-Newest
/
TORPET.d64
/
piano.c
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
2009-10-12
|
13KB
|
528 lines
1 REM" [166] PETER PONZO
2 [143]" SPC( 49 MARGARET AV. S.
3 REM" [166] WATERLOO, ONT.
4 [143]" SPC(
5 REM" [166] FOR COMMODORE-64
6 [143]" SPC(
7 REM" [166] DEC22/82
8 [143]"
10 PRINT"[147]":POKE53281,15:POKE53280,12:PRINT"[144]"
20 DIMN(255),P(255)
30 GOSUB10000:REM* INITIALIZE
40 GOSUB1900: REM* TITLE
50 GOSUB1000: REM* PIANO KEYBOARD
60 IFNO=0THENGOSUB50000:REM* TUNE
70 GOTO2800: REM* MENU #1
80 GOSUB1100: REM* KEYBOARD LETTERS
90 GOSUB2500: REM* INSTRUCTIONS
115 GOSUB2200:REM* "ENTER NOTES"
120 GOSUB1400:REM* INPUT NOTES
130 GOSUB2000:REM* ERASE LETTERS
140 GOSUB1200:REM* PLAY SONG
150 GOSUB500: REM* MENU #2
160 GOTO2800
200 REM START ALL VOICES
201 REM"[184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184]
205 [151]SID[170]24,15:[139]N[177]LK[167][142]
210 [151]PA(VC),FR(N)[173]256:[151]PB(VC),FR(N)[175]255
220 [151]SID[170]4[170]7[172]VC,WV(VC):PV[178]VC:VC[178]VC[170]1:[139]VC[178]3[167]VC[178]0
225 [142]
350 [143] SID SETUP
351 [143]"FREFREFREFREFREFREFREFREFRE
352 SID=54272:RESTORE
353 FORX=0TO2
354 READ AT(X),DE(X),SU(X),RE(X)
355 READ PW(X),WV(X)
356 AD(X)=AT(X)*16+DE(X)
357 SR(X)=SU(X)*16+RE(X)
358 NEXT X:RE=0
359 DATA 00,00,15,11,1000,17
360 DATA 00,00,15,11,1000,17
361 DATA 00,00,15,11,1000,17
362 FORX=0TO2:Y=7*X:IFRE<RE(X)THENRE=RE(X)
363 POKESID+5+Y,AD(X)
364 POKESID+6+Y,SR(X)
365 POKESID+2+Y,PW(X)/256
366 POKESID+3+Y,PW(X)AND255
367 POKESID+4+Y,8:REM RESET OSC.
368 POKESID+4+Y,WV(X)-1:REM NULL
369 NEXT X:GOSUB60200
370 K$="AWSEDFTGYHUJKOLP:;*=^"+CHR$(13)+"0":REM 0=PAUSE
371 LK=LEN(K$):KK=2^(1/12)
372 F1=523.251132:REM 1ST NOTE
373 DIM FR(LK),K(255)
374 FORI=1TOLK-1
375 K=ASC(MID$(K$,I,1)):K(K)=I
376 FR(I)=5.8*F1+30
378 F1=F1*KK:NEXT I
379 FORX=0TO2:Y=7*X:PA(X)=SID+1+Y:PB(X)=SID+Y:NEXT
380 K(I)=0:FR(I)=0:REM PAUSE=NOTE '0'
381 RETURN
500 REM****************
501 REM* MENU #2 *
502 REM****************
505 PRINT""SPC(S1)" PRESS RETURN[146] TO BEGIN AGAIN"
506 PRINTSPC(S1)"1[146]-PLAY AGAIN? 2[146]-ADD NOTES?"
507 PRINTSPC(S1)"3[146]-CORRECT BAD NOTE? 4[146]-SAVE ON DISK?"
508 PRINTSPC(S1)"5[146]-SAVE ON TAPE? 6[146]-CHANGE INTRO?"
509 PRINTSPC(S1)"7[146]-CHANGE VOICE? 8[146]-OTHER CHANGE?"
510 PRINTSPC(S1)" [184][184][184][184][184][184][184][184][184][184][184][184][184]PICK ONE![146][184][184][184][184][184][184][184][184][184][184][184][184][184]":GOSUB60200
512 GETA$:IFA$<>""THEN512
513 GETA$:IFA$=""THEN513
514 GOSUB3000:IFA$=CHR$(13)THENGOTO2800
515 IFVAL(A$)=0THEN505
516 ONVAL(A$)GOSUB1200,2900,5000,2600,1600,520,30000,31000
517 GOTO505
520 PRINT"[147]HOLD ON WHILE I SAVE THE NOTES.."
530 SV=6*4096-2:I=0
540 I=I+1:POKESV+2*I,N(I):POKESV+2*I+1,P(I):PRINT"NOTE [157][157][157]"I
550 IFI<MTHEN540
555 FORJ=1TO20:POKESV+2*I+J,0:NEXT
560 PRINT"[147] CHANGING DATA....."
595 POKE53281,6
600 PRINT"50009DATA"M:POKE198,3:POKE631,13:POKE632,13:POKE633,13
605 PRINT"K=50010:M="M":I=-19:SV=6*4096-1"
610 PRINT"GOTO620":END
620 I=I+20:S$="":IFI>2*MTHENPRINT"[147][144]":POKE53281,15:LIST50300-50305
630 PRINT"[147]";:POKE198,3:POKE631,13:POKE632,13:POKE633,13
632 PRINT""K"DATA";
635 FORJ=0TO9:S=PEEK(SV+I+2*J):P=PEEK(SV+I+2*J+1)
640 A$=MID$(STR$(S),2):B$=MID$(STR$(P),2)
650 S$=S$+A$+","+B$+",":NEXT
660 PRINTS$+"[157] ":K=K+1:PRINT"K="K":M="M":I="I":SV="SV
665 PRINT"GOTO620":END
1000 REM*********************
1001 :
1002 REM** CREATE KEYBOARD **
1003 :
1004 REM*********************
1005 N=1
1006 P1$="[146][144][167]":P2$=P1$:P3$=P1$
1007 K1$="[144] [144] ":FORI=1TO12:P1$=P1$+K1$:NEXT
1008 P1$=P1$+"[144] [144] [146]"
1010 K2$=" [146][144][170]":FORI=1TO13:P2$=P2$+K2$:NEXT:L=LEN(P2$):P2$=LEFT$(P2$,L-1)
1020 P3$=P3$+" [146][144][167] [146][144][167] [146][144][167] "
1025 PRINT"":FORI=1TO12:PRINTP2$:NEXT
1030 PRINT"":FORI=1TO5:PRINTP1$;:NEXT
1035 PRINT"":FORI=1TO5:PRINTP3$;
1040 GOSUB200:N=N+5:FORPP=1TO100:NEXT
1045 NEXT
1050 PRINT"[146][144][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164]"
1055 PRINT"";
1060 PRINT"[144][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163]"
1070 GOSUB1300:RETURN
1100 REM**********************
1101 :
1102 REM** KEYBOARD LETTERS **
1103 :
1104 REM**********************
1105 PRINT""SPC(S1)" W[146][165] E[146] T[146] Y[146] U[146] O[146] P[146] *[146] ^"
1110 PRINT""SPC(S1);
1115 PRINT" A[146] S[146] D[146] F[146] G[146] H[146] J[146] K[146] L[146] :[146] ;[146] =[146] RTN"
1120 RETURN
1200 REM****************
1201 :
1202 REM** PLAY MUSIC **
1203 :
1204 REM****************
1205 POKESID+24,15:ZZ=64
1206 FORQ=1TOM:N=N(Q):P=P(Q)
1209 AA=TI:SP=0:IFN>=23THEN1230
1210 SP=SP(N):H=H(N)
1230 PRINT" [157][157][157][157]"Q
1240 GOSUB200:POKEV3,0
1245 IFSP<>0THEN1270
1250 IFTI<AA+PTHEN1250
1255 GOTO1296
1259 :
1260 REM* PLAY PIANO KEY *
1270 X=SP>255:Y=SP>ZZ:POKEV0,-4*X:SP=SP+255*X:SS=SP+ZZ*(SP>ZZ)
1275 POKEV1,SP:POKEV2,H:POKEV4,SS:POKEV5,H:POKEV3,4-8*Y
1280 IFTI<AA+P THEN1280
1285 GOSUB60100
1296 NEXT:FORPP=1TO1000:NEXT:POKEV3,0
1297 GOSUB60200:RETURN
1300 REM*****************
1301 :
1302 REM** PIANO GLISS **
1303 :
1304 REM*****************
1305 POKESID,0: RETURN:PRINT@*!: POKESID+24,15
1310 FORPP=1TO10:R=RND(1):N=23*R+1:GOSUB200
1315 POKEV1,255*R:POKEV2,100+30*R:POKEV3,4:FORQQ=1TO10:NEXT:NEXT:POKEV3,0
1320 GOSUB60100:FORPP=0TO500:NEXT
1325 GOSUB60200:RETURN
1400 REM*****************
1401 :
1402 REM** INPUT NOTES **
1403 :
1404 REM*****************
1405 M=0:N=0:GOTO1460
1410 M=M+1:M$=MID$(STR$(M),2):PRINT" [157][157][157]"M$
1411 GETN$:IFN$=""THENGOSUB60100:GOTO1411
1412 NN=ASC(N$+Z$):AA=TI
1415 IFNN=N0THENM=M-1:GOSUB3000:RETURN
1420 IFNN=N1THENM=M-1:GOTO1411
1421 M$=MID$(STR$(M),2)
1422 PRINT" [157][157][157]"M$
1425 N=K(NN)
1430 GOSUB200:SP=SP(N):H=H(N)
1435 IFSP=0THEN1445
1438 X=SP>255:POKEV0,-4*X:SP=SP+255*X
1440 POKEV1,SP:POKEV2,H:POKEV3,4
1445 IFPEEK(KB)<>64THEN1445:REM WAIT
1446 P=TI-AA
1450 GOSUB60100
1456 POKEV3,0
1457 GETA$:IFA$<>""THEN1457
1460 N(M)=N:P(M)=P:IFM>499THENGOSUB3000:RETURN
1465 GOTO1410
1600 REM*************************
1601 :
1602 REM** SAVE A SONG ON TAPE **
1603 :
1604 REM*************************
1612 GOSUB3000
1620 PRINTSD$"NAME OF THE SONG";
1625 INPUTNM$
1650 OPEN1,1,1,NM$
1655 PRINT#1,M:PRINT#1,Z$
1660 FORI=1TOM
1665 PRINT#1,N(I)
1666 PRINT#1,P(I)
1670 NEXT:CLOSE1
1675 GOSUB3000
1685 RETURN
1700 REM*************************
1701 :
1702 REM** CALL SONG FROM TAPE **
1703 :
1704 REM*************************
1705 PRINTSD$
1715 INPUT"NAME YOUR SONG: [214][157][157][157]";NM$
1720 IFNM$="[214]"THEN1705
1725 GOSUB3000
1730 GOSUB60100
1740 OPEN1,1,0,NM$
1745 INPUT#1,M:INPUT"1,Z$
1760 [129]I[178]1[164]M
1765 [132]1,N(I)
1766 [132]1,P(I)
1775 [130]
1780 [160]1
1782 [141]3000:[153]SD$[170]""[170]NM$
1785 [141]1200
1795 [142]
1800 [143]****************************
1801 :
1802 [143]** INPUT "CORRECTED" NOTE **
1803 :
1804 [143]****************************
1805 [161]N$
1810 AA[178]TI:[161]N$:SN[178][194](KB):[139]N$[178]""[167]1810
1815 NN[178][198](N$):N[178]K(NN)
1820 [141]200
1830 [143]* WAIT FOR NOTE TO CHANGE *
1835 [139][194](KB)[178]SN[167]1835
1840 P[178][181]((TI[171]AA)[173]2[170]1)
1845 [141]60200:[142]
1900 [143]***********
1901 :
1902 [143]** TITLE **
1903 :
1904 [143]***********
1905 [153]SD$"STOP"
1910 [153][166]12)" (null)WAIT WAIT WAIT WAIT WAIT WAIT"
1915 [153][166]12)" WAIT WAIT WAIT WAIT WAIT WAIT WAIT WAIT WAIT"
1920 [153][166]12)" WAIT WAIT WAIT WAIT (null) WAIT WAIT WAIT"
1925 [153][166]12)" WAITSTEP WAIT WAIT WAIT WAIT(null) WAIT WAIT WAIT"
1930 [153][166]12)" WAIT WAIT WAIT WAIT WAIT WAIT "
1940 [129]PP[178]0[164]19:[151]1984[170]PP,102:[151]2023[171]PP,102:[130]
1950 [129]PP[178]0[164]19:[151]56256[170]PP,6:[151]56295[171]PP,6:[130]
1960 [129]PP[178]0[164]19:[151]1024[170]PP,102:[151]1063[171]PP,102:[130]
1970 [129]PP[178]0[164]19:[151]55296[170]PP,6:[151]55335[171]PP,6:[130]
1990 [142]
2000 [143]******************
2001 :
2002 [143]** ERASE LETTERS *
2003 :
2004 [143]******************
2010 [129]PP[178]0[164]39:[151]CRT[170]PP,32:[130]
2020 [129]PP[178]0[164]39:[151]CRT[170]14[172]WD[170]PP,32:[130]
2030 [142]
2100 [143]************************
2101 :
2102 [143]** KEYBOARD/NO SOUND **
2103 :
2104 [143]************************
2106 [129]J[178]1[164]6:[153]"":[129]K[178]1[164]J:[153]"";:[130]:[153][166]S1);
2110 [129]I[178]1[164]13:[153]" WAIT ";:[130]:[130]
2115 [129]J[178]1[164]6:[153]"":[129]K[178]1[164]J:[153]"";:[130]:[153][166]S1);
2120 [129]I[178]1[164]13:[153]"FN THEN";:[130]:[130]
2125 [129]J[178]1[164]6:[153]"":[129]K[178]1[164]J:[153]"";:[130]
2130 [153][166]S1)"FN "[166]6)"THENFN"[166]10)"THENFN"[166]7)"THENFN":[130]
2135 [153]""[166]S1)"TOTOTOTOTOTOTOTOTOTOTOTOTOTOTOTOTOTOTOTOTOTOTOTOTOTOTOTOTOTOTOTOTOTOTOTOTOTOTO"
2140 [153]""[166]S1);
2145 [153]"USRUSRUSRUSRUSRUSRUSRUSRUSRUSRUSRUSRUSRUSRUSRUSRUSRUSRUSRUSRUSRUSRUSRUSRUSRUSRUSRUSRUSRUSRUSRUSRUSRUSRUSRUSRUSRUSRUSR"
2150 [142]
2200 [143]*****************
2201 :
2202 [143]* 'ENTER NOTES' *
2203 :
2204 [143]*****************
2205 [153]"":C$[178]"WAIT"
2210 [141]60100:[129]L[178]1[164]10
2215 [153][166]S1)C$"ENTER NOTES:"
2216 [153]"ON";
2220 [139]C$[178]"WAIT"[167]C$[178]"":[137]2230
2225 C$[178]"WAIT"
2230 [129]K[178]1[164]100:[130]:[130]
2235 [153]:[142]
2500 [143]******************
2501 :
2502 [143]** INSTRUCTIONS **
2503 :
2504 [143]******************
2505 [153]""
2510 [153][166]S1)" TERMINATE WITH A "[199](34)"."[199](34)" "
2515 [153][166]S1)" ENTER A "[199](34)"0"[199](34)" FOR A PAUSE. "
2520 [153][166]S1)" AFTER A BAD NOTE ENTER "[199](34)"-"[199](34)" "
2525 [142]
2600 [143]*************************
2601 :
2602 [143]** SAVE A SONG ON DISK **
2603 :
2604 [143]*************************
2612 [141]3000:NW[178]WV(0)
2620 [153]SD$"NAME OF THE SONG";
2625 [133]NM$:[139][200](NM$,1)[179][177]" "[167]NM$[178]" "[170]NM$
2626 [141]3000
2630 [153]SD$"WHICH DRIVE ";
2635 [133]" 0CMDCMDCMD";DR$:D0$[178]DR$
2636 [141]3000
2637 [153]SD$"REPLACE AN EXISTING SONG";:[133]" NCMDCMDCMD";A$
2638 [139][200](A$,1)[178]"Y"[167]D0$[178]"@"[170]DR$
2640 [159]15,8,15:R$[178][199](13)
2650 [159]2,8,2,D0$[170]":"[170]NM$[170]",S,W"
2651 [141]40000:[139]E0[179][177]0[167]2670
2655 [152]2,M;R$;NW;R$
2660 [129]I[178]1[164]M
2665 [152]2,N(I);R$;P(I);R$:[130]
2670 [160]2:[160]15
2675 [141]3000:[142]
2700 [143]*************************
2701 :
2702 [143]** CALL SONG FROM DISK **
2703 :
2704 [143]*************************
2705 [141]63900:[141]3000
2710 [153]SD$;
2715 [133]"NAME YOUR SONG: (null)CMDCMDCMD";NM$:[139]NM$[178]"(null)"[167]2710
2720 [139][200](NM$,1)[179][177]" "[167]NM$[178]" "[170]NM$
2730 [141]3000:[159]15,8,15:[153]SD$;
2740 [159]2,8,2,DR$[170]":"[170]NM$[170]",S,R"
2745 [141]40000:[139]E0[179][177]0[167][160]2:[160]15:[142]
2750 [132]2,M,NW
2760 [129]I[178]1[164]M
2765 [132]2,A$,B$
2770 N(I)[178][197](A$):P(I)[178][197](B$):[130]
2775 [160]2:[160]15:[141]30050
2776 [141]3000:[153]SD$[170]""[170]NM$
2790 [141]1200:[141]3000:[142]
2800 [143]***************
2801 [143]* MENU #1 *
2802 [143]***************
2804 [141]3000:[141]2000:[141]60200
2805 [153]SD$"1WAIT:RECALL SONG FROM DISK."
2810 [153][166]S1)"2WAIT:RECALL SONG FROM TAPE."
2815 [153][166]S1)"3WAIT:COMPOSE A SONG."
2816 [153][166]S1)"4WAIT:QUIT."
2820 [129]I[178]1[164]3
2825 [153]"ON ":[129]PP[178]1[164]100:[130]
2830 [153]"ON FREFREFREFREFREFREFREFREFREFREFREFREFREPICK ONE!WAITFREFREFREFREFREFREFREFREFREFREFREFRE":[129]PP[178]1[164]100:[130]
2835 [130]
2840 [141]60200
2845 [161]A$:[139]A$[178]""[167]2845
2850 [141]3000
2855 [139][197](A$)[178]0[167]2805
2860 [145][197](A$)[137]2865,2870,80
2861 [153]SD$:[151]SID[170]24,0:[128]
2865 [141]2700:[137]500
2870 [141]1700:[137]500
2900 [143]*************
2901 :
2902 [143]* ADD NOTES *
2903 :
2904 [143]*************
2905 :
2925 [141]3000:[141]1100
2940 [141]2500:[141]2200
2950 [141]1410:[141]2000
2960 [141]1200:[142]
3000 [143]**************
3001 :
3002 [143]** ERASE **
3003 :
3004 [143]**************
3005 [153]"";
3010 [129]T[178]1[164]9:[153]CL$:[130]
3020 [141]2000
3040 [153]"";:[142]
5000 [143]**********************
5001 :
5002 [143]** REMOVE BAD NOTES **
5003 :
5004 [143]**********************
5016 [141]3000
5025 [153]SD$" PRESS @WAIT WHEN BAD NOTE IS PLAYED. "
5026 [153][166]S1)"THERE ARE "M" NOTES.."
5027 [153][166]S1)"START AT NOTE#";:[133]" SPC(CMDCMDCMD";PZ
5028 [153][166]S1)"SPEED OF DISPLAY(1 TO 10:1=FAST)";:[133]" SPC(CMDCMDCMD";PY
5030 [129]Q[178]PZ[164]M:N[178]N(Q):P[178]P(Q)
5031 AA[178]TI:SP[178]0:[139]N[177][178]23[167]5033
5032 SP[178]SP(N):H[178]H(N)
5033 [153]" CMDCMDCMDCMD"Q
5034 [141]200
5035 [139]SP[179][177]0[167]5038
5036 [139]TI[179]AA[170]P[167]5036
5037 [137]5044
5038 X[178]SP[177]255:[151]V0,[171]4[172]X:SP[178]SP[170]255[172]X
5039 [151]V1,SP:[151]V2,H:[151]V3,4
5040 [139]TI[179]AA[170]P [167]5040
5041 [141]60100
5042 [151]V3,0
5044 [129]K[178]1[164]10[172]PY
5045 [161]N$:BN[178][198](N$[170]Z$)
5050 [139]BN[178]N2[167]K[178]100:SQ[178]Q:Q[178]M
5055 [130]:[130]
5060 [141]3000
5065 [141]1100
5070 [153]SD$" PLEASE ENTER CORRECT NOTE #"SQ
5075 [141]1800
5080 N(SQ)[178]N::P(SQ)[178]P:[141]3000
5085 [141]1200
5090 [141]60100:[141]2000:[142]
10000 [143]*******************
10001 :
10002 [143]** INITIALIZE **
10003 :
10004 [143]*******************
10010 [141]1900:Z$[178][199](0)
10020 [141]350:PS[178][198]("0")
10025 KB[178]203
10030 SD$[178]""
10040 N0[178][198]("."):N1[178][198]("-"):N2[178][198]("@"):WD[178]40:CRT[178]1024
10050 VD[178]53248
10060 V0[178]VD[170]16:V1[178]VD[170]4:V2[178]VD[170]5:V3[178]VD[170]21
10065 V4[178]VD[170]6:V5[178]VD[170]7
19000 D(0)[178]55295[170]10[172]WD:D(1)[178]55295[170]5[172]WD
19010 D3[178]CRT[170]14[172]WD:D4[178]D3[170]WD[171]1
19060 CR(1)[178]1:CR(0)[178]0
20000 [143]*****************************
20001 :
20002 [143]**SPACES FOR KEYBOARD NOTES**
20003 :
20004 [143]*****************************
20005 [134]SP(255),H(255)
20010 [129]I[178]1[164]LK
20020 [135]SP,H:SP(I)[178]8[172]SP:H(I)[178]130[171]30[172]H:[130]:SP(0)[178]0
20030 [141]60200
20050 [131]3,0,4,1,6,0,7,1,9,0,12,0,13,1,15,0,16,1,18,0,19,1,21,0
20055 [131]24,0,25,1,27,0,28,1,30,0,33,0,34,1,36,0,37,1,39,0,0,0
20060 [153][166]11)"CLASSY INTRODUCTION?"
20062 CL$[178]" "
20063 BR$[178]" WAITSTOP"
20065 [161]A$:[139]A$[178]""[167]20065
20066 [153]"LOAD"
20067 [139]A$[179][177]"Y"[167]NO[178]1
20070 [141]32000
20100 [142]
30000 [143] CHANGE VOICES
30001 [143]"FREFREFREFREFREFREFREFREFREFREFREFREFRE
30010 IFWV(0)=17THENNW=33
30020 IFWV(0)=33THENNW=65
30030 IFWV(0)=65THENNW=17
30040 PRINTSD$" WAVEFORM"NW:FORPP=1TO500:NEXT
30050 IFNW=0THENNW=17
30060 FORPP=0TO2:WV(PP)=NW:NEXT
31000 REM OTHER CHANGES
31001 REM"[184][184][184][184][184][184][184][184][184][184][184][184][184]
31010 [142]
32000 [143] HANDS
32001 [143]"FREFREFREFREFRE
32002 FORPP=0TO62:READX:POKE832+PP,X:NEXT
32003 FORPP=0TO62:READX:POKE704+PP,X:NEXT
32004 POKE2042,13:POKE2043,11:POKEVD+21,0
32005 POKEVD+41,09:POKEVD+42,09:REM COLOUR
32006 POKEVD+23,12:POKEVD+29,12:REM EXPAND
32007 POKEVD+27,0:REM PRIORITY
32009 RETURN
32010 DATA1,128,0,2,64,0,3,193,128,3,194,64
32015 DATA3,195,192,3,199,156,3,199,60,227,207,123
32020 DATA243,222,247,123,221,238,63,255,254
32025 DATA31,255,248,15,255,240,15,255,224,7,255
32030 DATA224,7,255,224,7,255,224,3,255,224
32035 DATA1,255,192,0,128,64,0,255,192
32050 DATA0,1,128,0,2,64,1,131,192,2,67,192
32055 DATA27,227,192,61,227,192,222,243,199,239
32060 DATA115,207,247,251,222,125,255,252
32065 DATA63,255,248,31,255,248,15,255,248,7,255,248
32070 DATA3,255,248,3,255,248,3,255,240,3,255
32085 DATA224,1,255,192,0,192,64,0,255,192
40000 REM ERROR STATUS
40001 REM"[184][184][184][184][184][184][184][184][184][184][184][184]
40010 [132]15,E0,E1$,E2,E3$
40020 [139]E0[178]0[167][142]
40030 [141]3000:[153]SD$""E1$
40040 [129]PP[178]1[164]1000:[130]:[141]3000:[142]
50000 [143]***********************
50001 :
50002 [143]** INTRODUCTORY TUNE **
50003 :
50004 [143]************************
50005 [135]M:[129]I[178]1[164]M
50006 [135]N(I),P(I):[130]:[141]50300:[137]1200
50009 [131] 103
50010 [131]12,2,8,2,10,2,12,2,15,2,13,2,13,2,17,2,15,2,15,2
50011 [131]20,2,19,2,20,2,15,2,12,2,8,2,10,2,12,2,13,2,15,2
50012 [131]17,2,15,2,13,2,12,2,10,2,12,2,8,2,7,2,8,2,10,2
50013 [131]3,2,7,2,10,2,13,2,12,2,10,2,12,2,8,2,10,2,12,2
50014 [131]15,2,13,2,13,2,17,2,15,2,15,2,20,2,19,2,20,2,15,2
50015 [131]12,2,8,2,10,2,12,2,5,2,15,2,13,2,12,2,10,2,8,2
50016 [131]3,2,8,2,7,2,8,2,12,2,15,2,20,2,15,2,12,2,8,2
50017 [131]12,2,15,2,18,2,15,2,12,2,8,2,12,2,15,2,17,2,13,2
50018 [131]10,2,7,2,10,2,13,2,15,2,12,2,8,2,5,2,8,2,12,2
50019 [131]13,2,10,2,7,2,3,2,7,2,10,2,13,2,12,2,10,2,8,2
50020 [131]12,2,15,2,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
50300 [153]""[166]12)"**** JESU JOY ****"
50301 [143]"
50305 REM" CHANGE NAME ^^^^^ AND SAVE!
50400 [142]
60000 [143] RELEASE ALL VOICES
60001 [143]"FREFREFREFREFREFREFREFREFREFREFREFREFREFREFREFREFREFRE
60005 FORVV=0TO2:POKESID++4+7*VV,WV(VV)-1:NEXT:VV=0
60010 FORPP=1TO80*RE:NEXT:RETURN
60100 REM RELEASE PREVIOUS VOICE
60101 REM"[184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184][184]
60110 [151]SID[170]4[170]7[172]PV,WV(PV)[171]1
60130 [142]
60200 [143] STOP SID
60201 [143]"FREFREFREFREFREFREFREFRE
60210 FORPP=OTO2:POKESID+4+7*PP,0:NEXT:VV=0:RETURN
63900 GOSUB3000:PRINTSD$;:INPUT"WHICH DRIVE 0[157][157][157]";DR$:GOSUB3000:B=30:AN=1
63901 PRINTSD$"HIT RETURN[146] WHEN READY TO SELECT SONG."
63902 OPEN15,8,15
63904 OPEN2,8,0,"$"+DR$+":*=S"
63905 GET#2,A$:GET#2,A$:I$=""
63906 GETB$:IFST<>0ORB$<>""THEN63918
63907 FORA=1TOB:GET#2,A$
63908 IFA$=""THENA$=CHR$(0)
63909 I$=I$+A$:NEXT:IFAN=1THEN63915
63910 PRINTSD$" ":PP=7
63911 U1$=MID$(I$,PP,19):IFLEFT$(U1$,1)<>CHR$(34)THENPP=PP+1:IFPP<19THEN63911
63912 IFPP>19THEN63917
63914 IFMID$(U1$,2,1)=" "THENPRINTSD$""U1$
63915 FORI1=1TO10:I2=TAN(I1):NEXT
63916 AN=0:I$="":B=32:GOTO63906
63918 CLOSE2:CLOSE15:RETURN